package cnn.user.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import cnn.topfox.annotation.*;
import cnn.topfox.common.DataDTO;
import cnn.topfox.common.Incremental;
import cnn.topfox.data.DbState;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

@Data
@Accessors(chain = true)
@Table(name = "users", cnName = "用户表")
public class UserDTO extends DataDTO {
    /**
     *数据状态字段  数据库不存在的字段, 用于描述   transient修饰符 表示 改字段不会被序列化
     * @see cnn.topfox.data.DbState ;
     */
    @State @Other
    private transient String state= DbState.NONE;

    @Id private Integer id;
    private String code;
    private String name;
    private String password;
    private String sex;
    private Integer age;

    //@JsonSerialize()
    @JsonFormat(shape = JsonFormat.Shape.NUMBER, pattern = "###0.00")
    private BigDecimal amount;

    private String mobile;
    private Boolean isAdmin;

    private Long loginCount;

    @TableField(name = "loginCount", incremental = Incremental.ADDITION)
    private Integer loginCountAdd;

    /** 定义格式 , 默认yyyy-MM-dd,  非默认需求是 这里可以指定格式 */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date  lastDate;

    /**
     * 用户所属部门Id
     */
    private Integer deptId;

    /**
     * 不是数据库存在的字段,统一放在最后面, 必须加上注解:
     * @Other
     * 表示不是数据库的字段, TopFox在自动生成SQL时会忽略该字段
     */
    @Other
    private String deptName;

    /**
     * 创建人
     */
    @FillInsert
    private String createUser;


    /**
     * 修改人
     */
    @FillBoth
    private String updateUser;

}